function ResizingFrame() {
	
	/**
	 * Mousedown point variable,  used during resizing process (deltaX & deltaY)
	 * 
	 * @private
	 * @property  mouseDownPoint
	 * @type      {MessCoordinate}
	 * @default   null
	 */
	this.mouseDownPoint = null;
	
	/**
	 * Moving Frame position
	 * 
	 * @private
	 * @property  framePosition
	 * @type      {MessCoordinate}
	 * @default   null
	 */
	this.framePosition = null;
	
	this.cssPrefix = "Window";
	this.FRAME_CSS_SUFFIX = "ResizingFrame";
}
ResizingFrame.prototype = new MessUIElement();


	/**
	* Builds floating window object. Performs any necessary initialization
	*
	* @public
	* @method  build
	*/
	ResizingFrame.prototype.build = function() {

        // initialize control
        this.initControl();
        
        // build dom
        this.buildDOMObject(); 
        
        // save frame position
        this.saveFramePosition();    	
	};
	
	/**
	* Builds dom object representation
	*
	* @private
	* @method  buildDOMObject
	*/
	ResizingFrame.prototype.buildDOMObject = function() {
	
		// update theme
		if (this.getTheme() === null) {
			this.setTheme("Default");
		}
		
		// build frame
		var frame = this.buildWindowFrame();
		
		// save dom object, inherit both dimensions and position from parent
		this.setDomObject(frame, true, true);	
		// update z-index
        this.setZIndex(this.getRootPanel().getFloatingControls().size()+1);
        // update position && dimension
        this.setLeft(this.parent.getLeft());
		this.setTop(this.parent.getTop());
        this.setWidth(this.parent.getFloatingWidth()-2);
        this.setHeight(this.parent.getFloatingHeight()-2);

        // overwrite setWidth and setTop base methods
		this.setWidth = function(width) { this.domObject.style.width = width+'px'; };
		this.setHeight = function(height) { this.domObject.style.height = height+'px'; };
	};
	
	/**
	* Builds window frame dom
	*
	* @private
	* @method  buildWindowFrame
	* @return  {DOM} frame dom object
	*/
	ResizingFrame.prototype.buildWindowFrame = function() {
		
		var frame = DIV();
			frame.id = this.id;
			frame.className = this.getCssPrefix() + this.FRAME_CSS_SUFFIX;
		
		return frame;
	};
	
	/**
	 * Rememers mouse position over header during window activation - start of movement
	 * 
	 * @private
	 * @method  initHeaderMouseDownPoint
	 */
	ResizingFrame.prototype.initMouseDownPoint = function(oEvent) {
		
		// remember mouse pointer coordinates
		this.mouseDownPoint = new MessCoordinate(oEvent.clientX, oEvent.clientY);
		this.mouseDownPoint.setDeltaX( this.getParent().getLeft() + this.getParent().getWidth() - oEvent.clientX);
		this.mouseDownPoint.setDeltaY( this.getParent().getTop() + this.getParent().getHeight() - oEvent.clientY);
	}
	
	/**
	 * Save frame position information for later usage
	 * 
	 * @private
	 * @method   saveFramePosition
	 */
	ResizingFrame.prototype.saveFramePosition = function() {
		
		this.framePosition = new MessCoordinate(this.getLeft(), this.getTop());
	};
	 	
	/**
	 * Event handler for event dispatched from root panel to this control.
	 * 
	 * @public
	 * @method  handleEvent
	 * @param   {Event} event   event to handle
	 */
	ResizingFrame.prototype.handleEvent = function(oEvent) {
		
		if (oEvent.type === eventUtil.MOUSE_MOVE) {
		// handle mousemove	
			return this.resize(oEvent);	
		}	
		
		if (oEvent.type === eventUtil.MOUSE_UP) {
		// handle mouseup
			return this.finishResizing(oEvent);
		}
	};
	
	/**
	 * Resize floating window
	 * 
	 * @public
	 * @method  resize
	 * @param   {Event} event   event object
	 */
	ResizingFrame.prototype.resize = function(oEvent) {

		var oX = oEvent.clientX;
		var oY = oEvent.clientY;
		
		// set width
		var width = oX - this.framePosition.getX() + this.mouseDownPoint.getDeltaX();
		if (width > 100) {
			//this.setWidth(width);
			this.setWidth(width);
		}
		
		// set height
		var height = oY - this.framePosition.getY() + this.mouseDownPoint.getDeltaY();
		if (height > 100) {
			this.setHeight(height);
		}	
	};
	
	/**
	* Deactivates frame control - end of resizing process. Run logic in parent control
	*
	* @public
	* @method  finishResizing
	*/
	ResizingFrame.prototype.finishResizing = function(oEvent) {
	
		this.resize(oEvent);
		// update parent size
		this.parent.finishResizing(this, this.getWidth(), this.getHeight());	
	}
	